package top.kaoshanji.p4ch27a;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

/**
 * 代码清单-p4ch27a-351页a：客户模拟类
 * @author kaoshanji
 * ^_^
 * create time 2025/3/27 19:26
 */
public class Client {

    // 运行四则运算
    public static void main(String[] args) throws IOException {

        // 主线逻辑流程...用一个方法组织起来
        // 里面每个环节都是一个方法
        // 分散在各处的细节逻辑就这样有序起来了..一层又一层的套啊套...

        String expStr = getExpStr();

        // 赋值
        HashMap<String, Integer> var = getValue(expStr);
        Calculator cal = new Calculator(expStr);

        System.out.println("运算结果为：" + expStr + " = " + cal.run(var));
    }

    // 获得表达式
    public static String getExpStr() throws IOException {
        System.out.println("请输入表达式：");
        return (new BufferedReader(new InputStreamReader(System.in))).readLine();
    }

    // 获得值映射
    public static HashMap<String, Integer> getValue(String exprStr) throws IOException {

        HashMap<String, Integer> map = new HashMap<>();
        // 解析有几个参数要传递
        for (char ch: exprStr.toCharArray()) {
            if (ch != '+' && ch != '-') {
                // 解决重复参数的问题
                if (!map.containsKey(String.valueOf(ch))) {
                    String in = (new BufferedReader(new InputStreamReader(System.in))).readLine();
                    map.put(String.valueOf(ch), Integer.valueOf(in));
                }
            }
        }

        return map;
    }

}
